From 6e30650fe40a12844718fe8e6b571b514e40d8e5 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 20 Jun 2005 18:19:34 +0000 Subject: [PATCH] Variant of gtk_window_present which takes a timestamp. (#166379, Elijah 2005-06-20 Matthias Clasen * gtk/gtk.symbols: * gtk/gtkwindow.h: * gtk/gtkwindow.c (gtk_window_present_with_time): Variant of gtk_window_present which takes a timestamp. (#166379, Elijah Newren) --- ChangeLog | 7 +++++ ChangeLog.pre-2-10 | 7 +++++ ChangeLog.pre-2-8 | 7 +++++ docs/reference/ChangeLog | 4 +++ docs/reference/gtk/gtk-sections.txt | 1 + gtk/gtk.symbols | 1 + gtk/gtkwindow.c | 40 ++++++++++++++++++++++++----- gtk/gtkwindow.h | 4 ++- 8 files changed, 63 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index d521ecbb87..ef30e5e7b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-06-20 Matthias Clasen + + * gtk/gtk.symbols: + * gtk/gtkwindow.h: + * gtk/gtkwindow.c (gtk_window_present_with_time): Variant of + gtk_window_present which takes a timestamp. (#166379, Elijah Newren) + 2005-06-19 Matthias Clasen * gtk/gtk.symbols: Add a forgotten symbol diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index d521ecbb87..ef30e5e7b4 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +2005-06-20 Matthias Clasen + + * gtk/gtk.symbols: + * gtk/gtkwindow.h: + * gtk/gtkwindow.c (gtk_window_present_with_time): Variant of + gtk_window_present which takes a timestamp. (#166379, Elijah Newren) + 2005-06-19 Matthias Clasen * gtk/gtk.symbols: Add a forgotten symbol diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index d521ecbb87..ef30e5e7b4 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,10 @@ +2005-06-20 Matthias Clasen + + * gtk/gtk.symbols: + * gtk/gtkwindow.h: + * gtk/gtkwindow.c (gtk_window_present_with_time): Variant of + gtk_window_present which takes a timestamp. (#166379, Elijah Newren) + 2005-06-19 Matthias Clasen * gtk/gtk.symbols: Add a forgotten symbol diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index 76396a0080..445079696d 100644 --- a/docs/reference/ChangeLog +++ b/docs/reference/ChangeLog @@ -1,3 +1,7 @@ +2005-06-20 Matthias Clasen + + * gtk/gtk-sections.txt: Add gtk_window_present_with_time + 2005-06-19 Matthias Clasen * gtk/Makefile.am: Ignore some more headers. diff --git a/docs/reference/gtk/gtk-sections.txt b/docs/reference/gtk/gtk-sections.txt index 758ebc9474..7ebb8d8cee 100644 --- a/docs/reference/gtk/gtk-sections.txt +++ b/docs/reference/gtk/gtk-sections.txt @@ -4713,6 +4713,7 @@ gtk_window_get_focus gtk_window_set_focus gtk_window_set_default gtk_window_present +gtk_window_present_with_time gtk_window_iconify gtk_window_deiconify gtk_window_stick diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index 1709218bb0..ba9b06356f 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -3935,6 +3935,7 @@ gtk_window_move gtk_window_new gtk_window_parse_geometry gtk_window_present +gtk_window_present_with_time gtk_window_propagate_key_event gtk_window_remove_accel_group gtk_window_remove_embedded_xid diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 5f7f4f499f..47f5601805 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -5999,10 +5999,42 @@ gtk_window_set_frame_dimensions (GtkWindow *window, * currently open, and the user chooses Preferences from the menu * a second time; use gtk_window_present() to move the already-open dialog * where the user can see it. + * + * If you are calling this function in response to a user interaction, + * it is preferable to use gdk_window_present_with_time(). * **/ void gtk_window_present (GtkWindow *window) +{ + guint32 timestamp; +#ifdef GDK_WINDOWING_X11 + GdkDisplay *display; + + display = gtk_widget_get_display (GTK_WIDGET (window)); + timestamp = gdk_x11_display_get_user_time (display); +#else + timestamp = gtk_get_current_event_time (); +#endif + + gtk_window_present_with_time (window, timestamp); +} + +/** + * gtk_window_present_with_time: + * @window: a #GtkWindow + * @timestamp: the timestamp of the user interaction (typically a + * button or key press event) which triggered this call + * + * Presents a window to the user in response to a user interaction. + * If you need to present a window without a timestamp, use + * gtk_window_present(). See gtk_window_present() for details. + * + * Since: 2.8 + **/ +void +gtk_window_present_with_time (GtkWindow *window, + guint32 timestamp) { GtkWidget *widget; @@ -6019,13 +6051,7 @@ gtk_window_present (GtkWindow *window) /* note that gdk_window_focus() will also move the window to * the current desktop, for WM spec compliant window managers. */ -#ifdef GDK_WINDOWING_X11 - gdk_window_focus (widget->window, - gdk_x11_display_get_user_time (gtk_widget_get_display (widget))); -#else - gdk_window_focus (widget->window, - gtk_get_current_event_time ()); -#endif + gdk_window_focus (widget->window, timestamp); } else { diff --git a/gtk/gtkwindow.h b/gtk/gtkwindow.h index 5c4e4a8d7a..a9871e59bf 100644 --- a/gtk/gtkwindow.h +++ b/gtk/gtkwindow.h @@ -304,7 +304,9 @@ gboolean gtk_window_activate_key (GtkWindow *window, gboolean gtk_window_propagate_key_event (GtkWindow *window, GdkEventKey *event); -void gtk_window_present (GtkWindow *window); +void gtk_window_present (GtkWindow *window); +void gtk_window_present_with_time (GtkWindow *window, + guint32 timestamp); void gtk_window_iconify (GtkWindow *window); void gtk_window_deiconify (GtkWindow *window); void gtk_window_stick (GtkWindow *window); -- 2.30.2